package com.ktg.mes.wm.mapper;

import java.util.List;
import java.util.Map;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ktg.mes.pro.domain.ProItemNeed;
import com.ktg.mes.pro.domain.ProWorkorder;
import com.ktg.mes.wm.domain.ItemNeedStockWillOutInfo;
import com.ktg.mes.wm.domain.WmStockWillOut;
import com.ktg.mes.wm.domain.WmStockWillSelectParam;
import org.apache.ibatis.annotations.Param;

/**
 * 产品出库记录Mapper接口
 *
 * @author byteco
 * @date 2022-12-15
 */
public interface WmStockWillOutMapper extends BaseMapper<WmStockWillOut>
{
    /**
     * 使用leftJion 链接查询预出库数量
     * @param stockWillSelectParam
     * @return
     */
    List<Map> selectLeftJoinStockWillOut(WmStockWillSelectParam stockWillSelectParam);

    /**
     * 查询此统计分类的库存信息，同时带出预出库数量
     * @param names
     * @param proItemNeedId
     * @return
     */
    List<Map> materStockWithWillOut(@Param("names") String names,@Param("proItemNeedId") String proItemNeedId,@Param("itemId")long itemId);

    List<Map> materStockWithWillOutWithTp(@Param("names") String names,@Param("proItemNeedId") String proItemNeedId);


    /**
     * 根据库存信息，按统计分类统计预出库数量
     * @param names
     * @param likeName
     * @return
     */
    List<Map> materStockWithWillOut2(@Param("names") String names,@Param("likeName") String likeName);


    /**
     * 查询此统计分类的生产工单，同时带出排产日期和预出库数量
     * @param names
     * @param proItemNeedId
     * @return
     */
    List<Map> prokorderWithWillOut(@Param("names") String names,@Param("proItemNeedId") String proItemNeedId);

    List<Map> prokorderWithWillOutWithTp(@Param("names") String names,@Param("proItemNeedId") String proItemNeedId);

    /**
     * 根据库存信息，按统计分类统计预出库数量
     * @param names
     * @param proItemNeedId
     * @return
     */
    List<Map> materStockAllWillOut(@Param("names") String names,@Param("proItemNeedId") String proItemNeedId);

    List<Map> materStockAllWillOutWithTp(@Param("names") String names,@Param("proItemNeedId") String proItemNeedId);

    /**
     * 根据工单信息，按统计分类统计预出库数量
     * @param names
     * @param proItemNeedId
     * @return
     */
    List<Map> prokorderAllWillOut(@Param("names") String names,@Param("proItemNeedId") String proItemNeedId);

    List<Map> prokorderAllWillOutWithTp(@Param("names") String names,@Param("proItemNeedId") String proItemNeedId);


    List<ProWorkorder> sumItemCountWithProWorkorder(String stockId);


    /**
     * 查询需要此统计分类的其他客户需求记录
     * @param names
     * @return
     */
    List<ProItemNeed> relationProItemNeed(@Param("names") String names, @Param("recordId") String recordId);

    List<ProItemNeed> relationProItemNeedWithTp(@Param("names") String names, @Param("recordId") String recordId);


    /**
     * 查询生产工单预出库数量大于排产数量的记录
     * @return
     */
    List<Map> inventoryWarning();


    List<ItemNeedStockWillOutInfo> selectItemNeedStockWillOutInfo(ItemNeedStockWillOutInfo outInfo);


}
